module uart_loopback(
input sys_clk_p, //系统差分输入时钟
input sys_clk_n, //系统差分输入时钟
input sys_rst_n, //系外部复位信号，低有效

//UART 端口
input uart_rxd , //UART 接收端口
output uart_txd //UART 发送端口
);

//parameter define
parameter CLK_FREQ = 100000000; //定义系统时钟频率
parameter UART_BPS = 115200 ; //定义串口波特率

//wire define
wire sys_clk ; //单端系统时钟
wire uart_rx_done; //UART 接收完成信号
wire [7:0] uart_rx_data; //UART 接收数据

//*****************************************************
//** main code
//*****************************************************

//转换差分信号
IBUFDS diff_clock
(
    .I (sys_clk_p), //系统差分输入时钟
    .IB(sys_clk_n), //系统差分输入时钟
    .O (sys_clk) //输出系统时钟
);

//串口接收模块
uart_rx #(
    .CLK_FREQ (CLK_FREQ),
    .UART_BPS (UART_BPS)
)
u_uart_rx(
    .clk (sys_clk ),
    .rst_n (sys_rst_n ),
    .uart_rxd (uart_rxd ),
    .uart_rx_done (uart_rx_done),
    .uart_rx_data (uart_rx_data)
);

//串口发送模块
uart_tx #(
    .CLK_FREQ (CLK_FREQ),
    .UART_BPS (UART_BPS)
)
u_uart_tx(
    .clk (sys_clk ),
    .rst_n (sys_rst_n ),
    .uart_tx_en (uart_rx_done),
    .uart_tx_data (uart_rx_data),
    .uart_txd (uart_txd ),
    .uart_tx_busy ( )
);

endmodule